package com.kmxd.ams.client.arrange.vo;

import cn.hutool.core.util.ObjectUtil;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;

/**
 * 门类列表
 *
 * @author nickbi
 */
@Data
@Builder
@Schema(description = "门类列表")
public class ArrangeArchTypeListVO {

  @Schema(description = "文件数量")
  @JsonSerialize(using = ToStringSerializer.class)
  private Long docNum;

  @Schema(description = "案卷数量")
  @JsonSerialize(using = ToStringSerializer.class)
  private Long volNum;

  @Schema(description = "装盒数量")
  @JsonSerialize(using = ToStringSerializer.class)
  private Long boxNum;

  @Schema(description = "项目数量")
  @JsonSerialize(using = ToStringSerializer.class)
  private Long projNum;

  @Schema(description = "完成项目数量")
  @JsonSerialize(using = ToStringSerializer.class)
  private Long finishProjNum;

  @Schema(description = "主键ID")
  @JsonSerialize(using = ToStringSerializer.class)
  @ExcelProperty(value = "主键ID")
  private Long id;

  @Schema(description = "公司ID")
  @JsonSerialize(using = ToStringSerializer.class)
  @ExcelProperty(value = "公司ID")
  private Long comId;

  @Schema(description = "全宗ID")
  @JsonSerialize(using = ToStringSerializer.class)
  @ExcelProperty(value = "全宗ID")
  private Long fondsId;

  @Schema(description = "名称 当前全宗下不可重复。由于此表是逻辑删除，因此需要排除掉已删除的记录的名字进行查重")
  @ExcelProperty(value = "名称 当前全宗下不可重复。由于此表是逻辑删除，因此需要排除掉已删除的记录的名字进行查重")
  private String name;

  @Schema(
      description =
          "元数据模板类型 document文书档案、account会计档案、technical科技档案、img照片档案、radio音频档案、video视频档案、entity实物档案、other其他档案、material资料 这里是定义“业务附加元数据”")
  @ExcelProperty(
      value =
          "元数据模板类型 document文书档案、account会计档案、technical科技档案、img照片档案、radio音频档案、video视频档案、entity实物档案、other其他档案、material资料 这里是定义“业务附加元数据”")
  private String model;

  @Schema(description = "管理模式 前端收集库、档案库模板调用")
  @ExcelProperty(value = "管理模式 前端收集库、档案库模板调用")
  private String manageModel;

  @Schema(description = "文档的表名 同步自php")
  @ExcelProperty(value = "文档的表名 同步自php")
  private String docTableId;

  @Schema(description = "盒表名 同步自php")
  @ExcelProperty(value = "盒表名 同步自php")
  private String boxTableId;

  @Schema(description = "案卷表名 同步自php")
  @ExcelProperty(value = "案卷表名 同步自php")
  private String volTableId;

  @Schema(description = "项目的表名 同步自php")
  @ExcelProperty(value = "项目的表名 同步自php")
  private String projTableId;

  @Schema(description = "档案索引编号如f1_35_box中的35 同步自php")
  @ExcelProperty(value = "档案索引编号如f1_35_box中的35 同步自php")
  @JsonSerialize(using = ToStringSerializer.class)
  private Integer archIndex;

  @Schema(description = "档案类型作为分类统计、数据展示控制的主要依据 数据来自sys_dis_detail")
  @ExcelProperty(value = "档案类型作为分类统计、数据展示控制的主要依据 数据来自sys_dis_detail")
  private String category;

  @Schema(description = "年报统计配置 同步自php，暂不清楚用在哪里")
  @ExcelProperty(value = "年报统计配置 同步自php，暂不清楚用在哪里")
  @JsonSerialize(using = ToStringSerializer.class)
  private Long yearstatis;

  @Schema(description = "归档前是否进行四性检测")
  @ExcelProperty(value = "归档前是否进行四性检测")
  @JsonSerialize(using = ToStringSerializer.class)
  private Integer attributeTest;

  @Schema(description = "实体-启用电子档号章 0停用，1启用")
  @ExcelProperty(value = "实体-启用电子档号章 0停用，1启用")
  @JsonSerialize(using = ToStringSerializer.class)
  private Long enumEnabled;

  @Schema(description = "实体-默认规格 存具体数值：10、20、30、40、50、60")
  @ExcelProperty(value = "实体-默认规格 存具体数值：10、20、30、40、50、60")
  @JsonSerialize(using = ToStringSerializer.class)
  private Long volBoxDefaultSize;

  @Schema(description = "保管期限代码表，数据来自sys_dict_item.code")
  @ExcelProperty(value = "保管期限代码表，数据来自sys_dict_item.code")
  private String rpCodeId;

  @Schema(description = "密级代码表，数据来自sys_dict_item.code")
  @ExcelProperty(value = "密级代码表，数据来自sys_dict_item.code")
  private String secretCodeId;

  @Schema(description = "水印配置id")
  @ExcelProperty(value = "水印配置id")
  @JsonSerialize(using = ToStringSerializer.class)
  private Long watermarkId;

  @Schema(description = "扩展信息")
  @ExcelProperty(value = "扩展信息")
  private String allowExtension;

  /** 包含案卷，0不包含，1包含 */
  private Boolean haveVol;

  /** 包含盒，0不包含，1包含 */
  private Boolean haveBox;

  /** 包含项目，0不包含，1包含 */
  private Boolean haveProject;

  @Schema(description = "排序")
  @ExcelProperty(value = "排序")
  @JsonSerialize(using = ToStringSerializer.class)
  private Integer sort;

  public String getDocNum() {
    return ObjectUtil.isNull(docNum) ? null : docNum.toString();
  }

  public String getVolNum() {
    return ObjectUtil.isNull(volNum) ? null : volNum.toString();
  }

  public String getBoxNum() {
    return ObjectUtil.isNull(boxNum) ? null : boxNum.toString();
  }

  public String getProjNum() {
    return ObjectUtil.isNull(projNum) ? null : projNum.toString();
  }

  public String getFinishProjNum() {
    return ObjectUtil.isNull(finishProjNum) ? null : finishProjNum.toString();
  }

  public String getId() {
    return ObjectUtil.isNull(id) ? null : id.toString();
  }

  public String getComId() {
    return ObjectUtil.isNull(comId) ? null : comId.toString();
  }

  public String getFondsId() {
    return ObjectUtil.isNull(fondsId) ? null : fondsId.toString();
  }

  public String getArchIndex() {
    return ObjectUtil.isNull(archIndex) ? null : archIndex.toString();
  }

  public String getYearstatis() {
    return ObjectUtil.isNull(yearstatis) ? null : yearstatis.toString();
  }

  public String getAttributeTest() {
    return ObjectUtil.isNull(attributeTest) ? null : attributeTest.toString();
  }

  public String getEnumEnabled() {
    return ObjectUtil.isNull(enumEnabled) ? null : enumEnabled.toString();
  }

  public String getVolBoxDefaultSize() {
    return ObjectUtil.isNull(volBoxDefaultSize) ? null : volBoxDefaultSize.toString();
  }

  public String getWatermarkId() {
    return ObjectUtil.isNull(watermarkId) ? null : watermarkId.toString();
  }

  public String getSort() {
    return ObjectUtil.isNull(sort) ? null : sort.toString();
  }
}
